package contatos.patterns.chainofresponsbility;

import contatos.model.Contato;

/**
 * Esse handler identifica se o DDD de um contato é de SP. DDDs SP:
 * <ul>
 * <li>11</li>
 * <li>12</li>
 * <li>13</li>
 * <li>14</li>
 * <li>15</li>
 * <li>16</li>
 * <li>17</li>
 * <li>18</li> 
 * <li>19</li>
 * </ul>
 *
 * @author felipe
 * @see AbstractTelefoneHandler
 */
public class SPhandler extends AbstractTelefoneHandler {

    @Override
    public boolean accept(String telefone) {
        return (telefone.startsWith("11")
                || telefone.startsWith("12")
                || telefone.startsWith("13")
                || telefone.startsWith("14")
                || telefone.startsWith("15")
                || telefone.startsWith("16")
                || telefone.startsWith("17")
                || telefone.startsWith("18")
                || telefone.startsWith("19"));
    }

    @Override
    public void doHandle(Contato pessoa) {
        pessoa.setUf("SP");
        int telefone = Integer.parseInt(pessoa.getTelefone().substring(2, 4));
        if (telefone >= 96 && telefone <= 99) {
            pessoa.setOperadora("VIVO");
        } else if (telefone >= 91 && telefone <= 94) {
            pessoa.setOperadora("CLARO");
        } else if (telefone >= 81 && telefone <= 87) {
            pessoa.setOperadora("TIM");
        } else if (telefone == 80 || telefone > 87 && telefone <= 89) {
            pessoa.setOperadora("OI");
        }
    }

}
